package com.ruoyi.userr.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.userr.domain.Likes;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

/**
 * 作品点赞Mapper接口
 * 
 * @author lpt
 * @date 2025-08-13
 */
@Mapper
@Component("userrUserLikesMapper")
public interface UserLikesMapper
{
    /**
     * 查询作品点赞
     * 
     * @param id 作品点赞主键
     * @return 作品点赞
     */
    public Likes selectLikesById(Integer id);

    /**
     * 查询作品点赞列表
     * 
     * @param likes 作品点赞
     * @return 作品点赞集合
     */
    public List<Likes> selectLikesList(Likes likes);

    /**
     * 新增作品点赞
     * 
     * @param likes 作品点赞
     * @return 结果
     */
    public int insertLikes(Likes likes);

    /**
     * 修改作品点赞
     * 
     * @param likes 作品点赞
     * @return 结果
     */
    public int updateLikes(Likes likes);

    /**
     * 删除作品点赞
     * 
     * @param id 作品点赞主键
     * @return 结果
     */
    public int deleteLikesById(Integer id);

    /**
     * 批量删除作品点赞
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteLikesByIds(Integer[] ids);

    /**
     * 根据作者ID查询收到的点赞信息（返回Map列表）
     */
    List<Map<String, Object>> selectLikesByAuthorId(@Param("authorId") Long authorId);

    // 新增方法：统计作者收到的点赞总数
    Integer countLikesByAuthorId(@Param("authorId") Long authorId);

    /**
     * 根据用户ID查询点赞记录（关联用户、作品/菜谱表）
     * @param likerUid 点赞用户ID（users.id）
     * @return 点赞记录DTO列表
     */
    //List<UserLikeRecordDTO> selectUserLikeRecords(@Param("likerUid") Long likerUid);
}
